在將原始資料轉換成 JavaScript 的 array 之後,我們可以開始來寫程式了。
首先讓我們在 arr
底下加入以下三個全域變數:
/**
* 能順利被處理的資料
*/
const formattedData = [];
/**
* 不符合的資料
*/
const exceptions = [];
/**
* csv 檔的 header
*/
const csvHeader = ['日期', '具體時間', '備註', '星期幾'];
其中,csvHeader
是我們依照 Day 04 希望呈現的樣貌所加上去的。
讓我們建立一個名為 main
的 function,並建立一個 for-of 迴圈來處理每筆 arr 中的資料:
/**
* 主流程
* 預計處理三件事:
* 1. 移除多餘的英文句號並加上時間的分隔符號
* 2. 判斷每筆資料是否符合資料預期的形態
* - 若是,歸類為能被處理的資料
* - 若否,歸類為例外,後續手動調整
* 3. 將正常處理以及例外的資料轉成 csv 檔
*/
const main = () => {
for (const str of arr) {
}
};
讓我們建立另外一個 removeExtraPeriod
的 function 來專門處理「移除多餘的英文句號並加上時間的分隔符號」這件事。
/**
* 移除多餘的英文句號並加上時間的分隔符號
* @param {string} originalStr
* @returns {string}
*/
const removeExtraPeriod = (originalStr) => {
/**
* 因為只有第一組時間需要一個分隔符號,所以我們採取反向的做法:亦即將所有英文的句號移除後,再把每串 string index = 1 的位置後面加上一個英文的冒號「:」。
*/
let newStr = originalStr.replace(/\./g, '');
/**
* 時間加上冒號
*/
newStr = `${newStr.slice(0, 2)}:${newStr.slice(2)}`;
return newStr;
};
然後在我們的主流程迴圈中,加入這段實作:
const main = () => {
for (const str of arr) {
// step 1
const newStr = removeExtraPeriod(str);
/**
* 以空格作為分隔點,將字串切割成 array 方便後續處理
*/
const splittedStrArr = newStr.split(' ');
// TODO: step 2
// TODO: step 3
}
};
最後我們 print 出來看看:
確實移除了所有英文句號,並且加入了時間分割符號。
今天收工!
(待續)